package com.moli.iov.admin.service;

import com.moli.iov.admin.model.vo.res.VehicleCommandVo;
import com.moli.iov.admin.model.vo.res.VehicleDetailVo;
import com.moli.iov.base.model.dto.req.*;
import com.moli.iov.rest.RestResponse;
import org.springframework.validation.annotation.Validated;

/**
 * @author whl
 */
public interface  VehicleBaseService {

  RestResponse queryAttentionVehicleGraphics(VehicleGraphicsQueryListReqDto reqDto);

  RestResponse queryAttentionGroup(Long userId);

  /**
   * 车辆监控-》图形-列表
   */
  public RestResponse listVehicleGraphicsQueryListRes(@Validated VehicleGraphicsQueryListReqDto reqDto);

  /**
   * 车辆监控-》-列表
   * @param reqDto
   * @return
   */
  RestResponse listVehicleQueryListRes(QueryVehicleBaseListReqDto reqDto);

  /**
   *  According vehicle request data transfer object to query attention vehicle list collection.
   * @param reqDto Vehicle request data transfer object.
   * @return Restful for a response result.
   */
  RestResponse queryAttentionVehicleList(QueryVehicleBaseListReqDto reqDto);

  /**
   * 添加车辆信息
   * @param dto
   * @return
   */
  RestResponse saveVehicleBase(VehicleBaseReqDto dto);

  /**
   * 编辑修改车辆
   *
   * @param dto
   * @return
   */
  RestResponse updateVehicleBase(VehicleBaseReqDto dto);

  /**
   * 添加车辆关注
   *单位米
   * @param dto
   * @return
   */
  RestResponse saveVehicleAttention(VehicleAttentionReqDto dto);


  /**
   * According update vehicle attention request data transfer object to update vehicle attention.
   * @param dto Update vehicle attention request data transfer object
   * @return Restful for response result.
   */
  RestResponse updateVehicleAttention(UpdateVehicleAttentionReqDto dto);


  RestResponse saveVehicleFollowGroup(VehicleFollowGroupReqDto dto);

  /**
   * 车辆详情
   * @param vin
   * @return
   */
  RestResponse<VehicleDetailVo> getVehicleDetail(String vin) throws Exception;

  /**
   * 取消关注
   * @param dto
   * @return
   */
  RestResponse deleteVehicleAttention(VehicleAttentionReqDto dto);

  RestResponse deleteVehicleFollowGroup(VehicleFollowGroupReqDto dto);

  /**
   * 根据vin 获取空车命令
   * @param vin
   * @return
   */
  RestResponse<VehicleCommandVo> getVehicleCommandList(String vin);

}
